<?php
// 显示所有错误
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$results = [];
$success = true;

// 修复AdminAuth.php中的路径
$authFile = __DIR__ . '/includes/AdminAuth.php';
if (file_exists($authFile)) {
    $content = file_get_contents($authFile);
    $newContent = $content;
    
    // 修复相对路径
    $newContent = str_replace("'/../../include/Database.php'", "'/../include/Database.php'", $newContent);
    
    if ($content !== $newContent) {
        file_put_contents($authFile, $newContent);
        $results[] = "已修复 AdminAuth.php 中的路径";
    } else {
        $results[] = "AdminAuth.php 中的路径似乎没有问题";
    }
} else {
    $success = false;
    $results[] = "无法找到 AdminAuth.php 文件";
}

// 修复header.php中的路径
$headerFile = __DIR__ . '/includes/header.php';
if (file_exists($headerFile)) {
    $content = file_get_contents($headerFile);
    $newContent = $content;
    
    // 修复相对路径
    $newContent = str_replace("'/../../include/Database.php'", "'/../include/Database.php'", $newContent);
    
    if ($content !== $newContent) {
        file_put_contents($headerFile, $newContent);
        $results[] = "已修复 header.php 中的路径";
    } else {
        $results[] = "header.php 中的路径似乎没有问题";
    }
} else {
    $success = false;
    $results[] = "无法找到 header.php 文件";
}

// 检查Database.php中的方法名是否匹配index.php中使用的方法
$databaseFile = __DIR__ . '/../include/Database.php';
if (file_exists($databaseFile)) {
    $content = file_get_contents($databaseFile);
    $newContent = $content;
    
    // 检查是否存在fetchColumn方法
    if (strpos($content, 'function fetchColumn') === false) {
        // 添加别名方法fetchColumn作为fetchOne的别名
        $method = <<<'EOD'
    
    /**
     * 获取单个值（fetchOne的别名，为兼容性）
     * @param string $sql SQL语句
     * @param array $params 参数数组
     * @return mixed 单个值
     */
    public function fetchColumn($sql, $params = []) {
        return $this->fetchOne($sql, $params);
    }
EOD;
        // 在fetchOne方法后添加fetchColumn方法
        $newContent = str_replace("public function fetchOne", $method . "\n\n    public function fetchOne", $newContent);
        
        file_put_contents($databaseFile, $newContent);
        $results[] = "已在 Database.php 中添加 fetchColumn 方法作为 fetchOne 的别名";
    } else {
        $results[] = "Database.php 中已存在 fetchColumn 方法";
    }
} else {
    $success = false;
    $results[] = "无法找到 Database.php 文件";
}

// 检查数据库连接是否成功
try {
    require_once __DIR__ . '/../config/database.php';
    require_once __DIR__ . '/../include/Database.php';
    
    $db = Database::getInstance();
    $connection = $db->getConnection();
    if ($connection) {
        $results[] = "数据库连接测试成功";
    } else {
        throw new Exception("获取连接对象失败");
    }
} catch (Exception $e) {
    $success = false;
    $results[] = "数据库连接测试失败: " . $e->getMessage();
}

// 检查login.php文件是否存在
if (!file_exists(__DIR__ . '/login.php')) {
    $success = false;
    $results[] = "login.php 文件不存在，这可能会导致无法登录";
}

// 创建日志目录（如果不存在）
$logDir = __DIR__ . '/../logs';
if (!is_dir($logDir)) {
    if (mkdir($logDir, 0755, true)) {
        $results[] = "已创建日志目录";
    } else {
        $results[] = "无法创建日志目录";
    }
}

// 写入测试日志
$logFile = $logDir . '/debug.log';
if (file_put_contents($logFile, date('Y-m-d H:i:s') . " - KidsMind管理系统调试测试\n", FILE_APPEND)) {
    $results[] = "日志写入测试成功";
} else {
    $results[] = "日志写入测试失败，可能存在权限问题";
}

?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>KidsMind - 高级修复工具</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css">
</head>
<body>
    <div class="container mt-5">
        <div class="row justify-content-center">
            <div class="col-md-8">
                <div class="card shadow">
                    <div class="card-header bg-primary text-white">
                        <h4 class="mb-0">KidsMind 高级修复工具</h4>
                    </div>
                    <div class="card-body">
                        <h5 class="card-title mb-4">修复结果</h5>
                        
                        <?php foreach ($results as $result): ?>
                            <div class="alert alert-info"><?php echo $result; ?></div>
                        <?php endforeach; ?>
                        
                        <?php if ($success): ?>
                            <div class="alert alert-success"><strong>修复完成！</strong> 现在您可以尝试访问管理后台。</div>
                        <?php else: ?>
                            <div class="alert alert-warning"><strong>注意！</strong> 部分修复未成功，可能需要更多操作。</div>
                        <?php endif; ?>
                        
                        <div class="mt-4">
                            <p><strong>后续步骤：</strong></p>
                            <ol>
                                <li>请先访问 <a href="add_test_data.php">添加测试数据</a> 页面，确保数据库中有测试数据</li>
                                <li>然后尝试 <a href="login.php">登录管理后台</a>（如果您已登录，可以直接访问控制台）</li>
                                <li>如果仍然有问题，请查看 <a href="debug_pages.php">诊断页面</a> 获取更多帮助</li>
                            </ol>
                        </div>
                        
                        <div class="mt-4">
                            <a href="index.php" class="btn btn-primary">进入管理后台</a>
                            <a href="debug_pages.php" class="btn btn-secondary">运行诊断</a>
                            <a href="add_test_data.php" class="btn btn-success">添加测试数据</a>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html> 